Many processes and devices have been used for the utilization of virtual hardware resources. In a data processing system (e.g., a workstation or personal computer), an input/output (I/O) adapter such as a SCSI (small computer system interface) controller may be present as an interface device that is located between a peripheral device (e.g., a disk drive) and an I/O bus of the workstation or personal computer for connection with the peripheral device.
In hardware resource utilization devices such as a Gen 1 serial attached SCSI (SAS) host bus adapter (HBA), the number of supported drives is limited to the amount specified by a Hardware Device Index (HDI), which is analogous to a reference to an entry in a hardware table that records detailed information about a currently connected drive associated with a particular hardware. In a controller device such as SAS 1068 controller, there are only 256 hardware device indices. Several of these have been reserved for other purposes and hence communication can be accomplished to only 244 devices. Some product requirements involve supporting up to 1024 drives for particular applications, which requires hardware resource utilization devices such as HBA firmware to hardware so that support exists for more than 244 devices.
Some devices for dynamically enabling and disabling interrupt coalescing in a data processing system involve consistently monitoring an I/O load on an input/output processor (IOP) of an input output (I/O) adapter. The firmware on the I/O adapter may possess a global variable that stores counters for peripheral component interconnect (PCI) function registers. Each counter tracks the number of outstanding I/Os of a corresponding PCI function register. The counter is incremented whenever a new I/O is received and is decremented upon posting the completed message back to the operating system (OS). A timer interrupt can be generated periodically so that an interrupt service register (ISR) may be periodically performed. In the ISR, the maximum value stored of each counter seen since last timer interrupt is analyzed. When the maximum value stored is greater than a predetermined threshold value, the interrupt coalescing is enabled.
Accordingly, a need exists for shifting the bottleneck from hardware (hard limiting factor, not flexible) to firmware (more flexible, drive court could be upgraded by adding more external memory), adding external memory and customizing a swapping algorithm to suite users in their topology and application. What is needed is a better technique for the creation and utilization of virtual hardware resources.
Accordingly, a need exists for creating and utilizing virtual hardware resources by shifting the bottle neck from hardware (hard limiting factor, not flexible) to firmware (more flexible, drive court could be upgraded by adding more external memory). A need also exists for the capability of upgrading by adding external memory and customizing a swapping algorithm. By using such a methodology, it is believed that the number of supported devices is virtually limitless.